iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 19
0
自我挑戰組

網頁排版個人學習筆記系列 第 19

jQuery|操控網頁元素1-實作篇

  • 分享至 

  • xImage
  •  

文章提要

把上篇操控網頁元素1 的技巧帶入此篇實作


Q&A摺疊選單

點擊選單,顯示選單內容,再點擊其他選單,則原先被點選的選單內容隱藏。 範例
Q&A摺疊選單示意圖

  • 作用: 被點擊到的.question h3 ,會動態執行css的active設定→背景粉,未被點擊到的則移除掉active設定。
    • 自己this(.question h3)→動態執行active(看css給active甚麼指令)→回到this的父元素 .question→找父元素的同層元素 其它.question→再找同層元素下的子元素h3→做移除active動作
$(this).addClass('active').parent().siblings().find('h3').removeClass('active');
  • 作用: 點擊到的h3,同層的p會顯示;未被點擊到的h3,同層p隱藏。 (需寫合起動作slideUp,否則點選其它h3剛才點的h3不會合起)
    • 點擊h3後,自己this→找自己同層元素的p→做滑動動作→回到this的父元素 .question→找父元素的同層元素 其它.question→再找同層元素的子元素 p→做合起的動作
$(this).siblings('p').slideToggle().parent().siblings().find('p').slideUp();
  • .addClass('active') 與.slideToggle() 後方需再回到parent()父元素才能重新再指定下方的元素做設定
    https://ithelp.ithome.com.tw/upload/images/20190918/20119743vrFJpej6r5.png
    註: 此圖原初處為六角學院

二階式摺疊選單

點擊選單,顯示選單內容,再點擊其他選單,則原先被點選的選單內容隱藏。範例
二階式選單式意圖

  • 作用: 點選到的.menu>li>a顯示裡面的.inmenu ,其餘的隱藏。
    • this(.menu>li>a)→ 找自己的同層元素(.inmenu)→做滑出動作→再找.inmenu的上層父元素.menu>li→ .menu>li的其他同層元素 → .menu>li其他同層元素的子元素.inmenu→ 做合起的動作
$(this).siblings('.inmenu').slideDown().parent().siblings().find('.inmenu').slideUp();
  • 作用: 點選到的.menu>li>a 動態執行active ,其餘移除動態執行的active。
    • this(.menu>li>a)→動態執行active→ 找.menu>li>a的上層父元素li→.menu>li的其他同層元素→.menu>li其他同層元素的子元素a 做移除active動作
$(this).addClass('active').parent().siblings().find('a').removeClass('active');

以div與ul li寫選單與子選單差異

老師於兩個摺疊選單(Q&A與二階式)用了不同的寫法,在這邊練習寫出的效果有何差異。範例

  • 以ul li包子選單寫法→ 按下選單,整片子選單往下滑出
    • jq中設定點擊.menu>li>a時 .inmenu整個一起顯示
<ul class="menu">
      <li>
        <a href="#">選單1</a>
        <ul class="inmenu">
          <li>選單內容1-1</li>
          <li>選單內容1-2</li>
          <li>選單內容1-3</li>
        </ul>
      </li>
</ul>
  • 以div寫法→ 按下選單,一個一個子選單慢慢滑出
    • 因設定點擊.list h3時,顯示h5,所以h5內容文字才會慢慢滑出。
<div class="list">
    <h3>選單1</h3>
    <h5>選單內容1-1</h5>
    <h5>選單內容1-2</h5>
    <h5>選單內容1-3</h5>
</div>

上一篇
jQuery|操控網頁元素1
下一篇
jQuery|操控網頁元素2
系列文
網頁排版個人學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言